Ruby TypeErrors involving `expected Data`

Posted by Kenny Peng on Stack Overflow See other posts from Stack Overflow or by Kenny Peng
Published on 2010-05-11T19:39:50Z Indexed on 2010/05/11 19:44 UTC
Read the original article Hit count: 272

Filed under:
|

I've ran into situations where I have gotten these expected Data errors before, but they have always pointed to ActiveRecord not playing well with other libraries in the past. This piece of code:

def load(kv_block, debug=false)
    # Converts a string block to a Hash using split
    kv_map = StringUtils.kv_array_to_hash(kv_block)
    # Loop through each key, value
    kv_map.each do |mem,val|
        # Format the member from camel case to underscore
        member = mem.camel_to_underscore()
        # If the object includes a method to set the key (i.e. the key
        # is a member of self), invoke the method, setting the value of
        # the member)
        if self.methods.include?(member.to_set_method_name()) then # Exception thrown here
            self.send(member.to_set_method_name(), val)
        # Else, check for the same case, this time for an instance variable
        elsif self.instance_variable_defined?(member.to_instance_var_name())
            self.instance_variable_set(member.to_instance_var_name(), val)
        # Else, complain that the object doesn't understand the key with
        # respect to its class definition.
        else
            raise ArgumentError, "I don't know what to do with #{member}.  #{self.class} does not have a member or function called #{member}"
        end
    end
end

produces the error wrong argument type #<Class:0x11a02088> (expected Data) (TypeError) in the each loop on the first if test. I've inspected a post-mortem debugging instance using rdebug, and running that line manually, it works without a hitch.

Has anyone seen this error before and what's been your solution to it? I used to think it was ActiveRecord and other gems stomping on each other's definitions, but I removed any references to ActiveRecord and this still occurs.

© Stack Overflow or respective owner

Related posts about ruby

Related posts about typeerror